import time
import win32api as api
import pyautogui as pgui


def locate_image_with_retries(image_path, max_retries=3, retry_interval=3):
    """
    尝试定位图片，若未找到则重试指定次数
    :param image_path: 图片路径
    :param max_retries: 最大重试次数
    :param retry_interval: 重试间隔时间（秒）
    :return: 图片位置或 None
    """
    attempt = 0
    while attempt <= max_retries:
        try:
            location = pgui.locateOnScreen(image_path)
            if location is not None:
                return location
        except pgui.ImageNotFoundException:
            pass
        if attempt < max_retries:
            print(f"未找到，还可尝试{max_retries - attempt}次")
            time.sleep(retry_interval)
        attempt += 1
    print("所有尝试均失败，未找到图片。")
    return None


def input_code(*args):
    """
    输入内容
    :param args: 输入的内容
    :return:
    """
    for i in args:
        time.sleep(0.5)
        api.keybd_event(i, 0)


# 启动桌面
doubao_desk = locate_image_with_retries('doubao_desk.png')
if doubao_desk is not None:
    # pgui.moveRel(xrel, yrel)
    # xrel：表示鼠标在水平方向上的相对移动量，正值表示向右移动，负值表示向左移动。
    # yrel：表示鼠标在垂直方向上的相对移动量，正值表示向下移动，负值表示向上移动。
    center = pgui.center(doubao_desk)
    pgui.doubleClick(center)
    print("已尝试打开豆包")
    # 等待豆包界面加载
    time.sleep(10)
    # 定位输入框图片
    input_box = locate_image_with_retries('input_box.png')
    if input_box is not None:
        center_input = pgui.center(input_box)
        # 点击输入框以确保其获得焦点
        pgui.click(center_input)
        # 输入“abc”
        input_code(97, 98, 99)
        print("已在输入框输入'abc'")
        send = locate_image_with_retries('send.png')
        pgui.click(send)
        print("已发送消息")
    else:
        print("未找到输入框图片，无法输入内容。")
else:
    print("未找到豆包桌面图标，无法打开。")


